package com.example.chess.game;

import lombok.Data;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketSession;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 将在线的用户存储起来, 并和他的 webSocket会话映射起来
 */
@Component
@Data
public class OnlineUserManager {
    // 将所有在线的用户存储起来     游戏大厅的
    private ConcurrentHashMap<Integer, WebSocketSession> gameHall = new ConcurrentHashMap<>();

    // 将已经在房间的用户存储起来    进入游戏的
    private ConcurrentHashMap<Integer, WebSocketSession> gameRoom = new ConcurrentHashMap<>();


    // 进入游戏大厅的人 -- 存储起来
    public void enterGame(int userId, WebSocketSession session){
        gameHall.put(userId, session);
    }
    // 离开大厅的人 -- 移出
    public void outGame(int userId){
        gameHall.remove(userId);
    }
    // 查找
    public WebSocketSession getSession(int userId){
        return gameHall.get(userId);
    }

    // 匹配在游戏房间的人 -- 存储起来
    public void enterRoom(int userId, WebSocketSession session){
        gameRoom.put(userId, session);
    }
    // 离开游戏房间的人 -- 移出
    public void outRoom(int userId){
        gameRoom.remove(userId);
    }
    // 查找
    public WebSocketSession getRoomSession(int userId){
        return gameRoom.get(userId);
    }
}
